package com.joint.cloud.common.utils;

import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.lang.Nullable;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author lilengyi
 * @date 2020/3/30 18:33
 */
public class StringUtils extends org.springframework.util.StringUtils {

    public static String getStackMessage(Throwable throwable) {
        String fullStackTrace = ExceptionUtils.getStackTrace(throwable);
        if (fullStackTrace.length() > 500) {
            fullStackTrace = fullStackTrace.substring(0, 500);
        }
        return fullStackTrace;
    }

    public static String[] split(@Nullable String toSplit, @Nullable String delimiter) {
        if (!hasLength(toSplit) || !hasLength(delimiter)) {
            return null;
        }
        int offset = toSplit.indexOf(delimiter);
        if (offset < 0) {
            return new String[]{toSplit};
        }
        String[] values = toSplit.split(delimiter);
        return values;
    }

    public static String removeFromString(String values, String value) {
        // 返回结果
        String result = "";
        // 判断是否存在。如果存在，移除指定用户 ID；如果不存在，则直接返回空
        if(values.indexOf(",") != -1) {
            // 拆分成数组
            String[] array = values.split(",");
            // 数组转集合
            List<String> list = new ArrayList<String>(Arrays.asList(array));
            // 移除指定值
            list.remove(value);
            // 把剩下的值再拼接起来
            result = StringUtils.collectionToDelimitedString(list, ",");
        }
        // 返回
        return result;
    }
    public static String addToString(String values, String value) {
        // 返回结果
        String result = "";
        // 拆分成数组
        if(hasLength(values)) {
            String[] array = values.split(",");
            // 数组转集合
            List<String> list = new ArrayList<String>(Arrays.asList(array));
            // 移除指定值
            list.add(value);
            // 把剩下的值再拼接起来
            result = StringUtils.collectionToDelimitedString(list, ",");
        }else{
            result = value;
        }
        // 返回
        return result;
    }
}
